# 类中定义了 __iter__和 __next__函数
# __iter__函数返回self,也就是自身
# __next__函数返回洗一个数据，如果没有数据了，则要返回StopIteration的异常
#
# 满足以上桑条件的对象，就是迭代器对象
from collections.abc import Iterator


class MyRange(object):
    """ range(6),从0开始一直到6不包含6"""

    def __init__(self, stop_num):
        self.stop_num = stop_num
        self.num = -1  # 为了第一个数字从0开始

    def __iter__(self):
        return self

    def __next__(self):
        """返回下一条数据"""
        self.num += 1
        if self.num == self.stop_num:  # 没有下一条数据 要抛出异常
            raise StopIteration()
        return self.num

if __name__ == '__main__':
    objs = MyRange(6)
    # objs是迭代器对象
    print(isinstance(objs,Iterator))
    print(next(objs))
    print(next(objs))
    print(next(objs))
    print(next(objs))
    print(next(objs))
    print(next(objs))
